ডেটাবেস অপারেশন একটি অ্যাপ্লিকেশনের মূল অংশ, যেখানে বিভিন্ন ডেটা সংগ্রহ, সংরক্ষণ, আপডেট এবং মুছে ফেলা হয়। ASP.Net MVC ব্যবহার করে ডেটাবেস অপারেশন সম্পাদন করার জন্য প্রধানত Entity Framework (EF) ব্যবহার করা হয়, যা ডেটাবেসের সাথে যোগাযোগ সহজ করে তোলে। Entity Framework একটি ORM (Object-Relational Mapping) ফ্রেমওয়ার্ক, যা ডেটাবেস টেবিল এবং ক্লাসের মধ্যে সম্পর্ক স্থাপন করে এবং কোডের মাধ্যমে ডেটাবেস ম্যানেজমেন্ট সিস্টেমের কার্যক্রম পরিচালনা করতে দেয়।
Code-First অ্যাপ্রোচ ব্যবহার করে ডেভেলপাররা প্রথমে C# ক্লাস তৈরি করেন এবং এরপর Entity Framework সেই ক্লাসগুলো থেকে ডেটাবেস তৈরি করে। এটি ডেটাবেস তৈরি এবং মডেল ডিজাইন করার জন্য বেশি নিয়ন্ত্রণ দেয়।
Code-First এ কাজের পদ্ধতি:
Student
ক্লাস)।public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
এখানে Student
ক্লাস একটি মডেল, যেটি ডেটাবেস টেবিল হিসেবে পরিণত হবে।
ডেটাবেস তৈরি করতে:
Enable-Migrations
Add-Migration InitialCreate
Update-Database
Database-First অ্যাপ্রোচে, ডেভেলপাররা আগে ডেটাবেস তৈরি করেন এবং এরপর Entity Framework থেকে ডেটাবেসের টেবিলগুলোকে ক্লাসে রূপান্তরিত করে।
Database-First এ কাজের পদ্ধতি:
Entity Framework-এর EF Designer বা Scaffold-DbContext কমান্ড ব্যবহার করে ডেটাবেস থেকে ক্লাস জেনারেট করা হয়।
ডেটাবেসে নতুন রেকর্ড তৈরি করতে Add
বা AddRange
মেথড ব্যবহার করা হয়।
উদাহরণ:
public ActionResult Create(Student student)
{
if (ModelState.IsValid)
{
db.Students.Add(student);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(student);
}
এখানে Add
মেথড নতুন Student
রেকর্ড ডেটাবেসে যোগ করবে এবং SaveChanges
মেথড পরিবর্তনগুলি ডেটাবেসে সংরক্ষণ করবে।
ডেটাবেস থেকে ডেটা পড়তে Find
বা Where
মেথড ব্যবহার করা হয়।
উদাহরণ:
public ActionResult Details(int id)
{
var student = db.Students.Find(id);
if (student == null)
{
return HttpNotFound();
}
return View(student);
}
এখানে Find
মেথড একটি নির্দিষ্ট id
-এর Student
রেকর্ড পড়বে।
ডেটাবেসে বিদ্যমান রেকর্ড পরিবর্তন করতে Attach
এবং SaveChanges
মেথড ব্যবহার করা হয়।
উদাহরণ:
public ActionResult Edit(Student student)
{
if (ModelState.IsValid)
{
db.Entry(student).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(student);
}
এখানে Entry
মেথড ব্যবহার করে student
অবজেক্টকে মডিফাই করা হয়েছে এবং SaveChanges
ব্যবহার করে পরিবর্তনগুলি সংরক্ষণ করা হয়েছে।
ডেটাবেস থেকে রেকর্ড মুছে ফেলতে Remove
বা RemoveRange
মেথড ব্যবহার করা হয়।
উদাহরণ:
public ActionResult Delete(int id)
{
var student = db.Students.Find(id);
if (student == null)
{
return HttpNotFound();
}
db.Students.Remove(student);
db.SaveChanges();
return RedirectToAction("Index");
}
এখানে Remove
মেথড ব্যবহার করে student
রেকর্ডটি ডেটাবেস থেকে মুছে ফেলা হয়েছে এবং SaveChanges
দিয়ে পরিবর্তন সংরক্ষিত হয়েছে।
LINQ (Language Integrated Query) ব্যবহার করে Entity Framework-এর মাধ্যমে ডেটা ফিল্টার এবং রিট্রিভ করা যায়। LINQ ব্যবহার করে SQL ধরনের কোড লেখার মতো কোড লিখতে পারবেন, যা ডেটাবেসের সাথে সহজে যোগাযোগ করে।
উদাহরণ:
public ActionResult Index()
{
var students = db.Students.Where(s => s.Age > 18).ToList();
return View(students);
}
এখানে Where
মেথড ব্যবহার করে ছাত্রদের বয়স ১৮ এর বেশি এমন সব রেকর্ড ফিল্টার করা হয়েছে এবং ToList
মেথড ব্যবহার করে একটি লিস্ট তৈরি করা হয়েছে।
Repository Pattern এবং Unit of Work দুটি ডিজাইন প্যাটার্ন, যা ডেটাবেসের সাথে কাজ করার সময় কোডের পুনঃব্যবহারযোগ্যতা এবং টেস্টেবিলিটি উন্নত করে। Repository Pattern ডেটাবেসের সাথে যোগাযোগের জন্য একটি সাধারণ ইন্টারফেস প্রদান করে, এবং Unit of Work একাধিক রেপোজিটরি অপারেশনকে একত্রে কার্যকর করে।
উদাহরণ:
public class StudentRepository : IStudentRepository
{
private readonly ApplicationDbContext _context;
public StudentRepository(ApplicationDbContext context)
{
_context = context;
}
public void Add(Student student)
{
_context.Students.Add(student);
_context.SaveChanges();
}
public IEnumerable<Student> GetAll()
{
return _context.Students.ToList();
}
}
এখানে StudentRepository
ক্লাস ডেটাবেসের Students
টেবিলের সঙ্গে কাজ করার জন্য একটি সাধারণ ইন্টারফেস প্রদান করছে।
ASP.Net MVC ব্যবহার করে ডেটাবেস অপারেশন খুবই কার্যকর এবং সহজ। Entity Framework Code-First এবং Database-First Approach-এর মাধ্যমে ডেটাবেসের সাথে যোগাযোগ করা যায়, যেখানে CRUD অপারেশন, LINQ কুয়েরি এবং Repository Pattern ব্যবহার করে আরও উন্নত ফিচার তৈরি করা যায়। এসব টুল এবং পদ্ধতি ব্যবহার করে ডেটাবেসের কার্যক্রম সহজ, দ্রুত এবং মেইনটেইনেবল করা যায়।
Entity Framework (EF) হলো একটি Object Relational Mapping (ORM) টুল, যা ডেভেলপারদের ডেটাবেসের সাথে যোগাযোগ সহজ করতে সাহায্য করে। এটি ডেটাবেস টেবিলকে ক্লাস এবং কলামকে প্রপার্টি হিসেবে উপস্থাপন করে। EF ব্যবহার করে আমরা দুটি প্রধান পদ্ধতিতে ডেটাবেসের সঙ্গে কাজ করতে পারি: Code-First Approach এবং Database-First Approach।
Code-First Approach ব্যবহার করে আমরা প্রথমে ক্লাস তৈরি করি, যা ডেটাবেসের টেবিল হিসেবে ব্যবহৃত হয়। এর মাধ্যমে ডেভেলপাররা ডেটাবেসের ওপর কম নির্ভরশীল হয়ে কোড থেকে সরাসরি ডেটাবেস তৈরি এবং ম্যানেজ করতে পারেন।
Migration
এর মাধ্যমে সেসব পরিবর্তন পরিচালনা করা যায়।ধরা যাক আমরা একটি Student টেবিল তৈরি করতে চাই।
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public string Class { get; set; }
}
public class SchoolContext : DbContext
{
public DbSet<Student> Students { get; set; }
}
Add-Migration
এবং Update-Database
কমান্ড ব্যবহার করে ডেটাবেস তৈরি করা হয়।Add-Migration InitialCreate
Update-Database
Database-First Approach-এ প্রথমে ডেটাবেস তৈরি করা হয়, এবং তারপর Entity Framework ডেটাবেস থেকে মডেল জেনারেট করে। এটি বিদ্যমান ডেটাবেস নিয়ে কাজ করার জন্য আদর্শ।
ধরা যাক একটি বিদ্যমান ডেটাবেস রয়েছে এবং আমরা EF ব্যবহার করতে চাই।
Student
নামে একটি টেবিল তৈরি করুন।CREATE TABLE Students (
Id INT PRIMARY KEY,
Name NVARCHAR(50),
Class NVARCHAR(20)
);
Add New Item
> Data
> ADO.NET Entity Data Model
নির্বাচন করুন। Database-First Approach সিলেক্ট করে ডেটাবেস কানেকশন কনফিগার করুন।public partial class Student
{
public int Id { get; set; }
public string Name { get; set; }
public string Class { get; set; }
}
বৈশিষ্ট্য | Code-First Approach | Database-First Approach |
---|---|---|
ডেটাবেস প্রাথমিক অবস্থা | কোড থেকে ডেটাবেস তৈরি করা হয় | বিদ্যমান ডেটাবেস থেকে মডেল তৈরি হয় |
কোড এবং ডেটাবেস নিয়ন্ত্রণ | মডেলের উপর সম্পূর্ণ নিয়ন্ত্রণ | ডেটাবেস স্কিমা পূর্ব নির্ধারিত |
Migration | সহজে ডেটাবেস পরিবর্তন করা যায় | ডেটাবেস পরিবর্তন মডেলে প্রতিফলিত করা কঠিন |
ব্যবহারিক ক্ষেত্র | নতুন ডেটাবেস তৈরি করার জন্য উপযুক্ত | বিদ্যমান ডেটাবেসের জন্য উপযুক্ত |
Code-First Approach নতুন অ্যাপ্লিকেশন এবং ডেটাবেসের জন্য কার্যকর, যেখানে ডেভেলপারদের সম্পূর্ণ নিয়ন্ত্রণ প্রয়োজন। অন্যদিকে, Database-First Approach বিদ্যমান ডেটাবেস নিয়ে কাজ করার জন্য সবচেয়ে উপযুক্ত। প্রকল্পের প্রয়োজনীয়তা এবং ডেভেলপমেন্ট পরিবেশ অনুযায়ী সঠিক পদ্ধতি নির্বাচন করতে হবে।
CRUD (Create, Read, Update, Delete) হলো ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের একটি মৌলিক ধারণা। এটি ডেটাবেসে ডেটা পরিচালনা করার জন্য ব্যবহৃত হয়। ASP.Net MVC ফ্রেমওয়ার্ক ব্যবহার করে CRUD অপারেশন সহজে বাস্তবায়ন করা যায়। নিচে CRUD অপারেশনের প্রতিটি ধাপ এবং তার বাস্তবায়নের পদ্ধতি বিস্তারিতভাবে আলোচনা করা হলো।
CRUD অপারেশন করার জন্য একটি ডাটাবেস প্রয়োজন। এখানে আমরা Entity Framework Code-First পদ্ধতি ব্যবহার করব। প্রথমে একটি মডেল তৈরি করতে হবে যা ডাটাবেস টেবলের কাঠামো সংজ্ঞায়িত করবে। উদাহরণস্বরূপ:
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Class { get; set; }
}
Entity Framework এর মাধ্যমে ডাটাবেস অপারেশন পরিচালনা করার জন্য একটি DbContext ক্লাস তৈরি করুন:
public class ApplicationDbContext : DbContext
{
public DbSet<Student> Students { get; set; }
}
Entity Framework Code-First ব্যবহার করে ডাটাবেস তৈরি করার জন্য:
কমান্ড লিখুন:
Add-Migration InitialCreate
তারপর ডাটাবেস আপডেট করুন:
Update-Database
এটি ডাটাবেস তৈরি করবে এবং Students নামে একটি টেবল তৈরি করবে।
একটি নতুন শিক্ষার্থীর তথ্য তৈরি করতে:
[HttpGet]
public IActionResult Create()
{
return View();
}
[HttpPost]
public IActionResult Create(Student student)
{
if (ModelState.IsValid)
{
_context.Students.Add(student);
_context.SaveChanges();
return RedirectToAction("Index");
}
return View(student);
}
@model Student
<form asp-action="Create" method="post">
<div>
<label>Name</label>
<input asp-for="Name" />
</div>
<div>
<label>Age</label>
<input asp-for="Age" />
</div>
<div>
<label>Class</label>
<input asp-for="Class" />
</div>
<button type="submit">Create</button>
</form>
ডাটাবেস থেকে সমস্ত শিক্ষার্থীর তথ্য দেখানোর জন্য:
public IActionResult Index()
{
var students = _context.Students.ToList();
return View(students);
}
@model IEnumerable<Student>
<table>
<thead>
<tr>
<th>Name</th>
<th>Age</th>
<th>Class</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
@foreach (var student in Model)
{
<tr>
<td>@student.Name</td>
<td>@student.Age</td>
<td>@student.Class</td>
<td>
<a asp-action="Edit" asp-route-id="@student.Id">Edit</a> |
<a asp-action="Delete" asp-route-id="@student.Id">Delete</a>
</td>
</tr>
}
</tbody>
</table>
একটি নির্দিষ্ট শিক্ষার্থীর তথ্য সম্পাদনা করতে:
[HttpGet]
public IActionResult Edit(int id)
{
var student = _context.Students.Find(id);
return View(student);
}
[HttpPost]
public IActionResult Edit(Student student)
{
if (ModelState.IsValid)
{
_context.Students.Update(student);
_context.SaveChanges();
return RedirectToAction("Index");
}
return View(student);
}
@model Student
<form asp-action="Edit" method="post">
<input type="hidden" asp-for="Id" />
<div>
<label>Name</label>
<input asp-for="Name" />
</div>
<div>
<label>Age</label>
<input asp-for="Age" />
</div>
<div>
<label>Class</label>
<input asp-for="Class" />
</div>
<button type="submit">Save</button>
</form>
একটি নির্দিষ্ট শিক্ষার্থীর তথ্য মুছে ফেলতে:
[HttpGet]
public IActionResult Delete(int id)
{
var student = _context.Students.Find(id);
return View(student);
}
[HttpPost, ActionName("Delete")]
public IActionResult DeleteConfirmed(int id)
{
var student = _context.Students.Find(id);
_context.Students.Remove(student);
_context.SaveChanges();
return RedirectToAction("Index");
}
@model Student
<h3>Are you sure you want to delete this student?</h3>
<div>
<p>Name: @Model.Name</p>
<p>Age: @Model.Age</p>
<p>Class: @Model.Class</p>
</div>
<form asp-action="Delete" method="post">
<input type="hidden" asp-for="Id" />
<button type="submit">Yes</button>
<a asp-action="Index">No</a>
</form>
CRUD অপারেশন ASP.Net MVC অ্যাপ্লিকেশনের একটি গুরুত্বপূর্ণ অংশ। এটি ডেটাবেসের সাথে সরাসরি যোগাযোগ করতে এবং ডেটা তৈরি, পড়া, সম্পাদনা এবং মুছে ফেলার কার্যক্রম পরিচালনা করতে সাহায্য করে। ASP.Net MVC এর Entity Framework ব্যবহারের মাধ্যমে CRUD অপারেশন দ্রুত এবং সহজে বাস্তবায়ন করা যায়।
LINQ (Language Integrated Query) হল একটি শক্তিশালী টুল যা ডেটা ফিল্টারিং এবং রিট্রিভ করার জন্য ব্যবহৃত হয়। এটি ডেটাবেস, কালেকশন বা XML থেকে ডেটা রিট্রিভ এবং ম্যানিপুলেট করার একটি সাধারণ এবং একত্রিত পদ্ধতি প্রদান করে। LINQ Entity Framework-এর সাথে ব্যবহার করে ASP.Net MVC-তে ডেটা ফিল্টার এবং রিট্রিভ করা খুবই সহজ।
LINQ এর মাধ্যমে Entity Framework ডেটাবেস থেকে ডেটা রিট্রিভ করার জন্য IQueryable
অথবা IEnumerable
ব্যবহার করা হয়।
একটি Students
টেবিল থেকে সমস্ত ডেটা রিট্রিভ করতে LINQ ব্যবহার:
var students = _context.Students.ToList();
এটি Students
টেবিলের সমস্ত রেকর্ড students
ভেরিয়েবলে লোড করবে।
ধরা যাক, আমরা এমন সব শিক্ষার্থীর তালিকা রিট্রিভ করতে চাই যাদের বয়স ১৮-এর বেশি:
var adultStudents = _context.Students.Where(s => s.Age > 18).ToList();
এখানে Where
মেথড ব্যবহার করে বয়সের উপর ভিত্তি করে ডেটা ফিল্টার করা হয়েছে।
শুধুমাত্র শিক্ষার্থীদের নাম এবং ক্লাস রিট্রিভ করতে:
var studentNamesAndClasses = _context.Students
.Select(s => new { s.Name, s.Class })
.ToList();
এটি Students
টেবিল থেকে শুধুমাত্র Name
এবং Class
ফিল্ড রিট্রিভ করবে।
নাম অনুসারে শিক্ষার্থীদের তালিকা ক্রমবর্ধমানভাবে সাজাতে:
var sortedStudents = _context.Students.OrderBy(s => s.Name).ToList();
বয়স অনুসারে শিক্ষার্থীদের তালিকা ক্রমহ্রাসমানভাবে সাজাতে:
var sortedStudentsByAge = _context.Students.OrderByDescending(s => s.Age).ToList();
গ্রুপিং ব্যবহার করে ডেটা সংগঠিত করা যায়। উদাহরণস্বরূপ, শিক্ষার্থীদের ক্লাস অনুযায়ী গ্রুপ করতে:
var groupedStudents = _context.Students
.GroupBy(s => s.Class)
.Select(group => new
{
ClassName = group.Key,
Students = group.ToList()
})
.ToList();
এটি Class
অনুযায়ী শিক্ষার্থীদের গ্রুপ করবে এবং প্রতিটি গ্রুপের শিক্ষার্থীদের তালিকা প্রদান করবে।
var totalStudents = _context.Students.Count();
var totalClassTenStudents = _context.Students.Count(s => s.Class == "10");
var averageAge = _context.Students.Average(s => s.Age);
var maxAge = _context.Students.Max(s => s.Age);
var minAge = _context.Students.Min(s => s.Age);
ধরা যাক, প্রতি পেজে ১০টি শিক্ষার্থীর তালিকা দেখাতে হবে। Skip
এবং Take
মেথড ব্যবহার করে এটি করা সম্ভব:
int pageNumber = 2;
int pageSize = 10;
var paginatedStudents = _context.Students
.Skip((pageNumber - 1) * pageSize)
.Take(pageSize)
.ToList();
এটি ২য় পেজের জন্য ১০টি শিক্ষার্থীর তালিকা রিট্রিভ করবে।
LINQ ব্যবহার করে ডেটাবেস থেকে ডেটা ফিল্টার এবং রিট্রিভ করা ASP.Net MVC অ্যাপ্লিকেশনে একটি অত্যন্ত গুরুত্বপূর্ণ এবং কার্যকর পদ্ধতি। LINQ-এর সরল এবং শক্তিশালী কোয়েরি সিস্টেম ডেভেলপারদের কাজকে দ্রুত এবং দক্ষ করে তোলে। এটি ডেটাবেস অপারেশন সহজ করার পাশাপাশি কোডের পাঠযোগ্যতা বৃদ্ধি করে।
Repository Pattern এবং Unit of Work দুটি সফটওয়্যার ডিজাইন প্যাটার্ন যা ডেটাবেস অপারেশনগুলিকে সুসংগঠিত, রক্ষণাবেক্ষণযোগ্য এবং পুনর্ব্যবহারযোগ্য করতে সাহায্য করে। এই দুটি প্যাটার্ন ডেটাবেসে CRUD (Create, Read, Update, Delete) অপারেশনগুলি পরিচালনা করার জন্য একটি পরিষ্কার এবং নির্দিষ্ট পদ্ধতি প্রদান করে, বিশেষ করে Entity Framework (EF) বা অন্যান্য ORM (Object-Relational Mapping) ব্যবহার করার সময়।
Repository Pattern একটি ডিজাইন প্যাটার্ন যা ডেটাবেস বা অন্যান্য ডেটা সোর্সের সাথে কাজ করার জন্য একটি ইন্টারফেস প্রদান করে। এই প্যাটার্নটি ডেটা অ্যাক্সেস লজিককে অ্যাপ্লিকেশনের অন্য অংশ থেকে আলাদা করে, ফলে কোড মেইনটেনেন্স এবং টেস্টিং সহজ হয়।
public interface IRepository<T> where T : class
{
IEnumerable<T> GetAll();
T GetById(int id);
void Add(T entity);
void Update(T entity);
void Delete(int id);
}
public class Repository<T> : IRepository<T> where T : class
{
private readonly ApplicationDbContext _context;
private readonly DbSet<T> _dbSet;
public Repository(ApplicationDbContext context)
{
_context = context;
_dbSet = _context.Set<T>();
}
public IEnumerable<T> GetAll()
{
return _dbSet.ToList();
}
public T GetById(int id)
{
return _dbSet.Find(id);
}
public void Add(T entity)
{
_dbSet.Add(entity);
}
public void Update(T entity)
{
_dbSet.Update(entity);
}
public void Delete(int id)
{
T entity = _dbSet.Find(id);
if (entity != null)
{
_dbSet.Remove(entity);
}
}
}
এইভাবে Repository Pattern ডেটাবেসের সাথে কাজ করার জন্য একটি পরিষ্কার ইন্টারফেস প্রদান করে এবং কোড পুনঃব্যবহারযোগ্য এবং টেস্টযোগ্য করে তোলে।
Unit of Work একটি ডিজাইন প্যাটার্ন যা একাধিক ডেটাবেস অপারেশন একযোগে একটি ট্রানজেকশনের মধ্যে গ্রুপ করার জন্য ব্যবহৃত হয়। এটি ডেটাবেসে একাধিক অপারেশন করার সময় ডেটার অ্যাটমিক (atomic) সঠিকতা বজায় রাখে, অর্থাৎ যদি কোনো একটি অপারেশন ব্যর্থ হয়, তাহলে সমস্ত অপারেশন বাতিল হয়ে যাবে। এই প্যাটার্নটি ডেটাবেসে পরিবর্তনগুলো সিঙ্ক্রোনাইজ এবং ট্রানজেকশনাল করতে সহায়ক।
public interface IUnitOfWork : IDisposable
{
IRepository<Student> Students { get; }
IRepository<Course> Courses { get; }
int Complete();
}
public class UnitOfWork : IUnitOfWork
{
private readonly ApplicationDbContext _context;
private IRepository<Student> _students;
private IRepository<Course> _courses;
public UnitOfWork(ApplicationDbContext context)
{
_context = context;
}
public IRepository<Student> Students => _students ??= new Repository<Student>(_context);
public IRepository<Course> Courses => _courses ??= new Repository<Course>(_context);
public int Complete()
{
return _context.SaveChanges();
}
public void Dispose()
{
_context.Dispose();
}
}
using (var unitOfWork = new UnitOfWork(new ApplicationDbContext()))
{
var student = new Student { Name = "John", Age = 20 };
unitOfWork.Students.Add(student);
var course = new Course { Title = "Mathematics" };
unitOfWork.Courses.Add(course);
unitOfWork.Complete();
}
এখানে, একাধিক Repository ব্যবহার করা হয়েছে (Students
এবং Courses
), এবং সমস্ত পরিবর্তনগুলো একসাথে Complete
মেথডে সেভ করা হয়েছে। এটি একটি ট্রানজেকশনের মতো কাজ করে।
বৈশিষ্ট্য | Repository Pattern | Unit of Work |
---|---|---|
কাজ | একক ডেটাবেস টেবিলের জন্য CRUD অপারেশন সম্পন্ন করে। | একাধিক Repository এর মধ্যে একত্রিত অপারেশন পরিচালনা করে। |
সততা (Consistency) | একক ডেটাবেস টেবিলের মধ্যে পরিবর্তন সংরক্ষণ করে। | একাধিক Repository-এর পরিবর্তনগুলি একত্রে নিশ্চিত করে। |
ডেটাবেস অপারেশন | CRUD অপারেশন | একাধিক Repository-র মধ্যে পরিবর্তনগুলো একত্রে সেভ বা রোলব্যাক করা হয়। |
ট্রানজেকশন | ট্রানজেকশনাল নয় | ট্রানজেকশনাল আচরণ প্রদান করে (যদি একটি ব্যর্থ হয়, সবাই রোলব্যাক হয়)। |
Repository Pattern এবং Unit of Work দুটি গুরুত্বপূর্ণ প্যাটার্ন যা ডেটাবেস অপারেশনগুলিকে সুসংগঠিত এবং রক্ষণাবেক্ষণযোগ্য করে তোলে। Repository Pattern ডেটাবেসে CRUD অপারেশনগুলি পরিচালনার জন্য একটি পরিষ্কার ইন্টারফেস প্রদান করে, এবং Unit of Work একাধিক অপারেশনকে একত্রে পরিচালনা করে ট্রানজেকশনাল আচরণ নিশ্চিত করে। এই প্যাটার্নগুলো ব্যবহার করলে আপনার অ্যাপ্লিকেশনটি আরও মডুলার, টেস্টযোগ্য এবং রক্ষণাবেক্ষণযোগ্য হয়ে ওঠে।
common.read_more